package edu.cuit.avatar.callback;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/**
 * 使用定时器每秒钟发出一个通告
 * @author <a href="mailto:1020zhaodan@163.com">Adan</a>
 * @version 1.0
 * @date 2025/7/10 15:37
 */
public class BeepDemo {
    public static void main(String[] args) {
        /*
         * 创建一个定时器
         * 每10000毫秒触发定时器，定时器就会调用该事件里的回调方法
         */
        Timer timer = new Timer(1000, new BeepActionListener());
        //启动定时器
        timer.start();
        //消息确认框
        if(JOptionPane.showConfirmDialog(null, "退出应用?") == 0){
            //退出程序
            System.exit(1);
        }
    }
}

/**
 * ActionListener
 */
class BeepActionListener implements ActionListener{

    /**
     * 回调方法:当指定事件发生时触发回调，执行相关业务逻辑
     * @param e the event to be processed
     */
    @Override
    public void actionPerformed(ActionEvent e) {
        //该事件发生时发出一个通告
        System.out.println("At the tone，the time is "
                + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now()));
        //伴随响铃
        Toolkit.getDefaultToolkit().beep();
    }
}